import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/*
> 作业2
分析以下需求，并用代码实现：
(1)定义一个Worker类型(属性私有、空参有参构造、set、get方法、toString方法、equals方法、hashCode方法)，
包含三个属性：姓名(String name)、年龄(int age)、工资(double salary),在Worker类中定义work方法打印一句话，
如："凤姐 正在工作"，其中"凤姐"代表当前对象的姓名
 (2)定义List集合，在List集合中增加三个员工，基本信息如下：
 "凤姐" 18 20000
 "欧阳峰" 60 8000
 "刘德华" 40 30000
 (4)在"欧阳峰"之前插入一个员工，信息为：姓名："张柏芝"，年龄：35，工资3300
 (5)删除"刘德华"的信息
 (6)利用for 循环遍历，打印List 中所有员工的信息
 (7)利用迭代遍历，对List 中所有的员工调用work 方法
 (8)为Worker类重写equals 方法，当姓名、年龄、工资全部相等时候才返回true

 */

public class WorkerTest {
    public static void main(String[] args) {

        /** 1.准备一个List集合并打印*/
        List<Worker> list = new ArrayList<Worker>(); //list集合
        /**创建对象并调用其构造方法*/
        Worker w1 = new Worker("凤姐",18,20000);
        Worker w2 = new Worker("欧阳峰",60,8000);
        Worker w3 = new Worker("刘德华",40,30000);

        /** list集合添加对象 */
        System.out.println("list集合添加对象");
        list.add(w1);
        list.add(w2);
        list.add(w3);

        /** 获取list集合中姓名为欧阳峰对象下标 */
        System.out.println("获取list集合中姓名为欧阳峰对象下标");
        Iterator it = list.iterator();
        int subscript1 = 0;
        int subscript2 = 0;
        while(it.hasNext()){
            Worker worker = (Worker) it.next();
            if(worker.getName().equals("欧阳峰")){
                subscript1 = list.indexOf(worker);
                System.out.println("姓名是欧阳峰的下标是" + subscript1);
            }
        }

        /** 在"欧阳峰"之前插入一个员工，信息为：姓名："张柏芝"，年龄：35，工资3300 */
        System.out.println("在欧阳峰之前插入张柏芝信息");
        Worker w4 = new Worker("张柏芝",35,3300);
        list.add(subscript1,w4);
        System.out.println("欧阳峰前面添加张柏芝" + list);

        /** 获取list集合中姓名为刘德华对象下标 */
        System.out.println("获取刘德华下标");
        it = list.iterator(); //注：使用过迭代器后，再次使用需要使用一个新的迭代器
        while(it.hasNext()){
            Worker worker = (Worker) it.next();
            if(worker.getName().equals("刘德华")){
                subscript2 = list.indexOf(worker);
                System.out.println("姓名是刘德华的下标是" + subscript2);
            }
        }

        /** 删除"刘德华"的信息 */
        System.out.println("删除刘德华的信息");
        list.remove(subscript2);
        System.out.println("删除之后" + list);

        System.out.println("---------------------------------");
        /** 利用for 循环遍历，打印List 中所有员工的信息 */
        System.out.println("打印List 中所有员工的信息");
        for(int x = 0; x < list.size(); x++){
            System.out.print(list.get(x) + "\n");

        }

        /**利用迭代遍历，对List 中所有的员工调用work 方法*/
        System.out.println("List中所有的员工调用work 方法");
        it = list.iterator();   //注：使用过迭代器后，再次使用需要使用一个新的迭代器
        for(int x = 0; x < list.size(); x++){
            Worker worker = (Worker) it.next();
            worker.work();
        }

        /** 为Worker类重写equals 方法，当姓名、年龄、工资全部相等时候才返回true*/
        System.out.println("当姓名、年龄、工资全部相等时候才返回true");
        System.out.println(list.get(0).equals(new Worker("凤姐",18,20000)));


    }
}
